Протокол TCP
Загальні відомості про протокол TCP.
Транспортний рівень. Транспортний рівень оперує наскрізно між станціями. Прийнято, що базовий мережевий рівень (тобто IP) може доручати пакети між станціями, можливо, використовуючи при цьому один або більше раутерів (рис. 3.74).
Рис. 3.74. Операції на транспортному рівні.
Транспортний рівень передбачає такі особливості:
більшість застосувань вимагають, щоб транспортний рівень був орієнтований на сполучення, тобто він мусить забезпечувати встановлення і припинення сполучення;
необхідність або можливість наскрізного контролю помилок.
Найбільш поширеним протоколом транспортного рівня є TCP, який використовується понад IP. Протокол TCP перетворює ненадійні послуги IP без встановлення сполучення у послуги пересилання, які
є надійними, орієнтованими на сполучення, повнодуплексними;
здійснюють пересилання потоків, без видимого пакетування;
є наскрізними, тобто діють безпосередньо між двома процесами.
Для забезпечення надійних послуг, орієнтованих на сполучення, TCP ділить вхідний потік байтів на сегменти. Один сегмент, включно зі заголовком і полем даних, випадковим чином поміщається в одну данограму. Останній байт у кожному сегменті ідентифікується байтом поля лічильника, розміщеним у заголовку сегменту.
Коли сегмент прийнятий коректно та непошкодженим, то приймач висилає до надавача спеціальний сегмент підтвердження, який містить байт лічильника останнього коректно прийнятого байта потоку. Якщо надавач очікує підтвердження занадто довго, то він робить паузу (timeout) і повторно висилає сегмент, припускаючи, що відповідна данограма була втрачена. Крім того, TCP буферизує сегменти, які приходять не в потрібному порядку, і знищує здубльовані сегменти, використовуючи для ідентифікації байт лічильника.
Номери портів TCP. Оскільки протокол TCP забезпечує систему доручення між процесами, то він потребує ідентифікувати конкретний процес у двох сполучених прикінцевих системах. Тому кожен процес, який потребує комунікуватися з іншим процесом, ідентифікує себе у системі протоколів TCP/IP абстрактною адресою, яку називають номером (протокольного) порта, тобто номер порта використовується для іменування процесу. Номер порта – це 16-бітове число, яке вживається протоколом станція-станція для визначення того, якому процесу (протоколу вищого рівня або програмі-застосуванню) він повинен доручати вхідні повідомлення. Два процеси можуть комунікуватися між собою, узгодивши номери портів, які вони хочуть використати для комунікації. Номер порта – це адреса для протоколу TCP, бо кожен сегмент містить номер порта для кожного з процесів, які висилають або приймають інформаційні потоки.
Деякі протоколи вищих рівнів, наприклад, SMTP, TELNET або FTP, стандартизовані в системі протоколів TCP/IP, використовують однакові (але різні для кожного протоколу) номери портів у всіх впровадженнях TCP/IP. Такі “призначені” номери портів називають “добре відомими портами” (well-known ports), а відповідні стандартні застосування – “добре відомими послугами” (well-cnown services). Призначення добре відомих портів і контроль за ними здійснюється органом Internet Assigned Number Authority (IANA). У більшості систем призначені порти можуть вживатися тільки системними процесами або програмами привілейованих користувачів. Призначені добре відомі порти охоплюють номери від 0 до 1023. Порти з номерами в діапазоні від 1024 до 65535 не контролюються IANA і можуть вживатися у більшості систем для звичайних програм користувачів.
Конфлікту між двома різними застосуваннями, які пробують використати ті самі номери портів на одній станції, уникають, приписуючи цим застосуванням висилати запит про наявний порт до локального TCP/IP. Оскільки номер порта виділяється динамічно, то ці номери портів можуть відрізнятися від одного виклику застосування до іншого. Конкретніше, для встановлення TCP-сполучення процес повідомляє програмне забезпечення TCP, що він очікує на сполучення на певному номері порта (добре відомому або ні). За означенн...